package cm.tl.pms.entity;

import cm.tl.pms.common.annotation.Excel;
import cm.tl.pms.common.entity.BaseEntity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;

import java.math.BigDecimal;
import java.util.Date;

/**
 * 验收对象 biz_acceptance
 *
 * @author ruoyi
 * @date 2025-04-09
 */
@TableName("biz_acceptance")
public class Acceptance extends BaseEntity {

    /**
     * 主键ID
     */
    @TableId(value = "id", type = IdType.AUTO)
    private Long id;

    /**
     * 项目编号
     */
    @Excel(name = "项目编号")
    private String projectId;

    /**
     * 项目名称
     */
    @Excel(name = "项目名称")
    private String projectName;

    /**
     * 申报部门
     */
    @Excel(name = "申报部门")
    private String reportDepartment;

    /**
     * 项目类别
     */
    @Excel(name = "项目类别")
    private String projectCategory;

    /**
     * 验收状态
     */
    @Excel(name = "验收状态")
    private Long status;

    /**
     * 验收日期
     */
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    @Excel(name = "验收日期", width = 30, dateFormat = "yyyy-MM-dd")
    private Date acceptanceDate;

    /**
     * 云资源占用
     */
    @Excel(name = "云资源占用")
    private String cloudResourceUsage;

    /**
     * 目录上链情况
     */
    @Excel(name = "目录上链情况")
    private Long catalogChainStatus;

    /**
     * 验收申请状态
     */
    @Excel(name = "验收申请状态")
    private Long applyStatus;

    /**
     * 数据共享状态
     */
    @Excel(name = "数据共享状态")
    private Long dataShareStatus;

    /**
     * 更新周期
     */
    @Excel(name = "更新周期")
    private String updateCycle;

    /**
     * 延期验收申请
     */
    @Excel(name = "延期验收申请")
    private Long postponeRequest;

    /**
     * 验收申请状态
     */
    @Excel(name = "验收申请状态")
    private Long postponeRequestStatus;

    /**
     * 验收邀请函
     */
    @Excel(name = "验收邀请函")
    private Long invitationStatus;

    /**
     * 指定人
     */
    @Excel(name = "指定人")
    private String dispenseApprover;

    /**
     * 预算金额
     */
    @Excel(name = "预算金额")
    private BigDecimal budgetAmount;

    /**
     * 最终使用金额
     */
    @Excel(name = "最终使用金额")
    private BigDecimal lastUseAmount;

    /**
     * 财评审定金额
     */
    @Excel(name = "财评审定金额")
    private BigDecimal financeApprovalAmount;

    /**
     * 父类id
     */
    @Excel(name = "父类id")
    private Long parentId;

    /**
     * 单位id
     */
    @Excel(name = "单位id")
    private Long deptId;

    public void setId(Long id) {
        this.id = id;
    }

    public Long getId() {
        return id;
    }

    public void setProjectId(String projectId) {
        this.projectId = projectId;
    }

    public String getProjectId() {
        return projectId;
    }

    public void setProjectName(String projectName) {
        this.projectName = projectName;
    }

    public String getProjectName() {
        return projectName;
    }

    public void setReportDepartment(String reportDepartment) {
        this.reportDepartment = reportDepartment;
    }

    public String getReportDepartment() {
        return reportDepartment;
    }

    public void setProjectCategory(String projectCategory) {
        this.projectCategory = projectCategory;
    }

    public String getProjectCategory() {
        return projectCategory;
    }

    public void setStatus(Long status) {
        this.status = status;
    }

    public Long getStatus() {
        return status;
    }

    public void setAcceptanceDate(Date acceptanceDate) {
        this.acceptanceDate = acceptanceDate;
    }

    public Date getAcceptanceDate() {
        return acceptanceDate;
    }

    public void setCloudResourceUsage(String cloudResourceUsage) {
        this.cloudResourceUsage = cloudResourceUsage;
    }

    public String getCloudResourceUsage() {
        return cloudResourceUsage;
    }

    public void setCatalogChainStatus(Long catalogChainStatus) {
        this.catalogChainStatus = catalogChainStatus;
    }

    public Long getCatalogChainStatus() {
        return catalogChainStatus;
    }

    public void setApplyStatus(Long applyStatus) {
        this.applyStatus = applyStatus;
    }

    public Long getApplyStatus() {
        return applyStatus;
    }

    public void setDataShareStatus(Long dataShareStatus) {
        this.dataShareStatus = dataShareStatus;
    }

    public Long getDataShareStatus() {
        return dataShareStatus;
    }

    public void setUpdateCycle(String updateCycle) {
        this.updateCycle = updateCycle;
    }

    public String getUpdateCycle() {
        return updateCycle;
    }

    public void setPostponeRequest(Long postponeRequest) {
        this.postponeRequest = postponeRequest;
    }

    public Long getPostponeRequest() {
        return postponeRequest;
    }

    public void setPostponeRequestStatus(Long postponeRequestStatus) {
        this.postponeRequestStatus = postponeRequestStatus;
    }

    public Long getPostponeRequestStatus() {
        return postponeRequestStatus;
    }

    public void setInvitationStatus(Long invitationStatus) {
        this.invitationStatus = invitationStatus;
    }

    public Long getInvitationStatus() {
        return invitationStatus;
    }

    public void setDispenseApprover(String dispenseApprover) {
        this.dispenseApprover = dispenseApprover;
    }

    public String getDispenseApprover() {
        return dispenseApprover;
    }

    public void setBudgetAmount(BigDecimal budgetAmount) {
        this.budgetAmount = budgetAmount;
    }

    public BigDecimal getBudgetAmount() {
        return budgetAmount;
    }

    public void setLastUseAmount(BigDecimal lastUseAmount) {
        this.lastUseAmount = lastUseAmount;
    }

    public BigDecimal getLastUseAmount() {
        return lastUseAmount;
    }

    public void setFinanceApprovalAmount(BigDecimal financeApprovalAmount) {
        this.financeApprovalAmount = financeApprovalAmount;
    }

    public BigDecimal getFinanceApprovalAmount() {
        return financeApprovalAmount;
    }

    public void setParentId(Long parentId) {
        this.parentId = parentId;
    }

    public Long getParentId() {
        return parentId;
    }

    public void setDeptId(Long deptId) {
        this.deptId = deptId;
    }

    public Long getDeptId() {
        return deptId;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
                .append("id", getId())
                .append("projectId", getProjectId())
                .append("projectName", getProjectName())
                .append("reportDepartment", getReportDepartment())
                .append("projectCategory", getProjectCategory())
                .append("status", getStatus())
                .append("acceptanceDate", getAcceptanceDate())
                .append("cloudResourceUsage", getCloudResourceUsage())
                .append("catalogChainStatus", getCatalogChainStatus())
                .append("applyStatus", getApplyStatus())
                .append("dataShareStatus", getDataShareStatus())
                .append("updateCycle", getUpdateCycle())
                .append("postponeRequest", getPostponeRequest())
                .append("postponeRequestStatus", getPostponeRequestStatus())
                .append("invitationStatus", getInvitationStatus())
                .append("dispenseApprover", getDispenseApprover())
                .append("budgetAmount", getBudgetAmount())
                .append("lastUseAmount", getLastUseAmount())
                .append("financeApprovalAmount", getFinanceApprovalAmount())
                .append("parentId", getParentId())
                .append("createTime", getCreateTime())
                .append("updateTime", getUpdateTime())
                .append("createBy", getCreateBy())
                .append("updateBy", getUpdateBy())
                .append("deptId", getDeptId())
                .toString();
    }
}
